package Acwing.数据结构;

import java.util.Scanner;

/**
 * @Title: unionFind
 * @Author 贾金博
 * @Package Acwing.数据结构
 * @Date 2025/4/10 上午11:47
 * @description: 并查集问题
 */
public class unionFind {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] p = new int[n + 10];
        // 刚开始的时候 都是默认自己是自己的父母的
        for(int i = 1; i <= n; i ++ ) {
            p[i] = i;
        }

        int m = sc.nextInt();
        while(m -- > 0 ) {
            char c = sc.next().charAt(0);

            int x = sc.nextInt();
            int y = sc.nextInt();

            if(c == 'M') { // 表示的是合并的操作
                // 也即是让 x 和 y 进行 合并的操作
                // 先去找到 x 的祖宗 然后再去找到 y 的祖宗 让x的祖宗认y的祖宗为父亲
                p[find(x, p)] = find(y, p);
            } else {
                // 看看二者是不是在一个区域里面的
                if(find(x, p) == find(y, p)) {
                    System.out.println("Yes");
                } else {
                    System.out.println("No");
                }
            }
        }

    }

    // 查找 x 的祖宗的算法
    public static int find(int x, int[] p) {
        if(x == p[x]) {
            return x;
        } else {
            // 注意 这里写的是 p[x] 也即是要去更新的是 p[x]
            return p[x] = find(p[x], p ); // 这一步是非常优美的
        }
    }
}
